Управление видимостью ячеек табличного поля

В табличном поле существует возможность изменять видимость отдельных ячеек при отображении данных. Для этого необходимо использовать обработчик события ПриВыводеСтроки() табличного поля. Параметрами данного события являются объекты типа ОформлениеСтроки и ДанныеСтроки. Объект ОформлениеСтроки имеет свойство Ячейки - коллекцию ячеек отображаемой строки. Каждая ячейка в этой коллекции является объектом типа ОформлениеЯчейки, который содержит свойства, влияющие на отображение ячеек. Для установки видимости отдельных ячеек отображаемой строки необходимо использовать свойство Видимость ячейки отображаемой строки. При установке данного свойства в Ложь табличное поле не будет отображать содержимое соответствующей ячейки табличного поля. Также стоит отметить, что если все ячейки, находящиеся в одной строке составной колонки, имеют выключенное свойство Видимость, то такая строка не будет отображена табличным полем. Объект ДанныеСтроки содержит  коллекцию значений текущей строки, соответствующую коллекции колонок отображаемого динамического списка.

Поясним использование данного свойства на следующем примере. Пусть существует журнал документов ДокументыПокупателей (реквизит формы ЖурналДокументовСписок), у которого имеются графы Контрагент (тип СправочникСсылка.Контрагенты) и Информация (тип СправочникСсылка.ДоговорыВзаиморасчетов). Колонки, отображающие значения данных граф, объединены в одну составную колонку, причем колонка Информация находится под колонкой Контрагент. Необходимо отображать значения указанных граф только если они не являются пустыми. Тем самым, строки табличного поля, у которых заполнены значения обоих граф, будут отображаться в две строки и в одну строку в противном случае.

Для этого необходимо при обработке события ПриВыводеСтроки() устанавливать видимость ячейкам, отображающим значения соответствующих граф:

Копировать в буфер обмена
Процедура ЖурналДокументовСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)

   Если ДанныеСтроки.Контрагент = Справочники.Контрагенты.ПустаяСсылка() Тогда

     ОформлениеСтроки.Ячейки.Контрагент.Видимость = Ложь;

   КонецЕсли;

   Если ДанныеСтроки.Информация = Справочники.ДоговорыВзаиморасчетов.ПустаяСсылка() Тогда

     ОформлениеСтроки.Ячейки.Информация.Видимость = Ложь;

   КонецЕсли;

КонецПроцедуры

Для того чтобы в шапке табличного поля составная колонка отображалась как единственная колонка, необходимо для колонки Информация сбросить свойство "Отображать в шапке" в палитре свойств. Также в нашем примере для колонки Контрагент устанавливается текст шапки "Контрагент/Информация", указывающий, что в данной колонке отображаются значения граф Контрагент и Информация.

Необходимо помнить, что так как журнал документов является динамическим списком, то возможно удаление табличным полем колонок, у которых которых сброшено свойство Видимость. Если при обработке события ПриВыводеСтроки() произойдет обращение к таким колонкам, то возникнет ошибка времени выполнения. Для того чтобы определенные колонки не удалялись табличным полем, необходимо запретить данным колонкам удаление из динамического списка при изменении их видимости в табличном поле. Для этого необходимо при обработке события формы ПриОткрытии() добавить их в динамический список и запретить им удаление:

Копировать в буфер обмена
Процедура ПриОткрытии()

   ЖурналДокументовСписок.Колонки.Добавить("Контрагент", Ложь);
   ЖурналДокументовСписок.Колонки.Добавить("Информация", Ложь);

КонецПроцедуры

Более подробно ознакомиться с отличиями работы табличного поля при отображении динамических списков можно в разделе Особенности работы табличного поля с динамическими списками.